// 计算两个坐标点间的距离，距离单位为KM
export const getDistance = function (lat1, lng1, lat2, lng2) {
  var radLat1 = lat1 * Math.PI / 180.0;
  var radLat2 = lat2 * Math.PI / 180.0;
  var a = radLat1 - radLat2;
  var  b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
  Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b/2),2)));
  s = s * 6378.137; // EARTH_RADIUS;
  s = Math.round(s * 10000) / 10000;
  return s;
}

// 计算两点对于正北方向的朝向角度，第二个点相对于第一个点的正北方向的角度，
// 这个公式计算出的朝向角度是以正北方向为0度，顺时针旋转为正，逆时针旋转为负。如果需要以正南方向为0度，可以将计算结果加上180度
export const getAngle = function (lat1, lon1, lat2, lon2) {
  const dLon = ((lon2 - lon1) * Math.PI) / 180;
  const y = Math.sin(dLon) * Math.cos((lat2 * Math.PI) / 180);
  const x =
    Math.cos((lat1 * Math.PI) / 180) * Math.sin((lat2 * Math.PI) / 180) -
    Math.sin((lat1 * Math.PI) / 180) *
      Math.cos((lat2 * Math.PI) / 180) *
      Math.cos(dLon);
  const brng = (Math.atan2(y, x) * 180) / Math.PI;
  const angle = (brng + 360) % 360;
  return angle;
}
